package com.bnz.controller;


import com.bnz.pojo.Dept;
import com.bnz.pojo.Emp;
import com.bnz.pojo.PageResult;
import com.bnz.service.DeptService;
import com.bnz.service.EmpService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import java.util.List;


@Controller
@RequestMapping("/emp")
public class EmpController {
   @Autowired
   private EmpService empService;
   @Autowired
   private DeptService deptService;

   // 1. 查询所有员工
   @RequestMapping("/list")
    public String list(Model model){
       // 1.1 查询所有员工
       List<Emp> emps = empService.findAll();
       // 1.2 将查询到的信息放到model中
       model.addAttribute("emps",emps);
       // 1.3 返回
       return ("emp/list");
   }
   // 2. 分页查询
   @RequestMapping("/findByPage")
   public String findByPage(@RequestParam(required = false, defaultValue = "1") int page,
                        @RequestParam(required = false, defaultValue = "5") int pageSize,
                        Model model){
      // 2.1 查询所有员工
      PageResult<Emp> pr = empService.findByPage(page,pageSize);
      // 2.2 将查询到的信息放到model中
      model.addAttribute("pr",pr);
      // 2.3 返回
      return ("emp/list");
   }
   // 3. 条件查询带分页
   @RequestMapping("/search")
   public String search(@RequestParam(required = false,defaultValue = "1") int page,
                        @RequestParam(required = false,defaultValue = "5") int pageSize,
                        Emp emp,
                        Model model){
      // 3.1 查询所有员工
      PageResult<Emp> pr = empService.search(page,pageSize,emp);
      // 3.2 查询所有部门
      List<Dept> depts = deptService.findAll();
      // 3.3 将查询到的所有信息放到model中
      model.addAttribute("pr",pr);
      model.addAttribute("dept",depts);
      model.addAttribute("emp",emp);
      // 3.4 返回
      return ("emp/list");
   }
   // 4. 从查询所有员工页面跳转到添加，修改员工页面
   @RequestMapping("/editPage")
   public String editPage(Model model, String eid){
      // 4.1 根据id查询所有员工
      Emp emp  = empService.findById(eid);
      // 4.2 查询所有部门
      List<Dept> depts = deptService.findAll();
      // 4.3 将所有查询到的信息放到model中
      model.addAttribute("emp",emp);
      model.addAttribute("dept",depts);
      // 4.4 返回到添加修改员工页面
      return ("emp/edit");
   }
   // 5. 添加员工
   @RequestMapping("/add")
   public String add(Emp emp){
      // 5.1 添加员工
      empService.add(emp);
      // 5.2 返回
      return "redirect:/emp/search.do";
   }
   // 6. 修改员工
   @RequestMapping("/update")
   public String update(Emp emp){
      // 6.1 修改员工
      empService.update(emp);
      // 6.2 返回
      return "redirect:/emp/search.do";
   }
   // 7. 删除员工
   @RequestMapping("delete")
   public String delete(String eid){
      // 7.1 根据员工id删除员工
      empService.delete(eid);
      // 7.2 返回
      return "redirect:/emp/search.do";
   }
}
